package com.marketing.auth.service;

import com.marketing.auth.dto.UserInfoDto;
import com.marketing.auth.entity.User;

/**
 * Token管理服务接口
 */
public interface TokenService {
    
    /**
     * 存储用户Token到Redis
     * @param token JWT Token
     * @param userInfo 用户信息DTO
     * @param expireTime 过期时间（秒）
     */
    void storeToken(String token, UserInfoDto userInfo, Long expireTime);
    
    /**
     * 验证Token是否存在于Redis中
     * @param token JWT Token
     * @return 是否有效
     */
    boolean isTokenValid(String token);
    
    /**
     * 从Redis获取用户信息
     * @param token JWT Token
     * @return 用户信息
     */
    UserInfoDto getUserByToken(String token);
    
    /**
     * 刷新Token过期时间（会话续期）
     * @param token JWT Token
     * @param expireTime 新的过期时间（秒）
     * @return 是否续期成功
     */
    boolean refreshToken(String token, Long expireTime);
    
    /**
     * 删除Token（用户登出）
     * @param token JWT Token
     */
    void removeToken(String token);
    
    /**
     * 删除用户所有Token（强制下线）
     * @param userId 用户ID
     */
    void removeUserAllTokens(Long userId);
}